var express = require('express');
var router = express.Router();
var configDao = require('../dao/config.js');
var AdminToken = require('../db/user_tokens.js');

/* GET home page. */
router.get('/', function(req, res, next) {
  // res.json(globalVar.config);
});

router.post('/setGlobal', function(req, res, next) {
    var par = paramAll(req);
    if(!par.key || !par.value){
        res.json(new ERR('缺少 KEY 或者 VALUE ！', 400));
        return;
    }
    if(!par.token){
        res.json(new ERR('token不为空 ！', 400));
        return;
    }
    AdminToken.checkAdminLogin(par.token, null, function (err, code, adminInfo) {
        if (err) {
            res.json(new ERR(err, code));
            return;
        }
        var configInfo = {
            uid: 0,
            key: par.key,
            value: par.value,
            comment: par.comment
        };
        configDao.setConfig(configInfo, function (err, result) {
            if(err){
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        })
    });
});

router.post('/setByApp', function(req, res, next) {
    var par = paramAll(req);
    if(!par.key || !par.value){
        res.json(new ERR('缺少 KEY 或者 VALUE ！', 400));
        return;
    }
    if(!par.token){
        res.json(new ERR('token不为空 ！', 400));
        return;
    }
    if(!par.appSid){
        res.json(new ERR('缺少app标识 ！', 400));
        return;
    }
    AdminToken.checkAdminLogin(par.token, par.appSid, function (err, code, adminInfo) {
        if (err) {
            res.json(new ERR(err, code));
            return;
        }
        var configInfo = {
            uid: 0,
            app_sid: par.appSid,
            key: par.key,
            value: par.value,
            comment: par.comment
        };
        configDao.setConfig(configInfo, function (err, result) {
            if(err){
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        })
    });
});

router.post('/setByUser', function(req, res, next) {
    var par = paramAll(req);
    if(!par.key && !par.value){
        res.json(new ERR('缺少 KEY或value', 400));
        return;
    }
    if(!par.token){
        res.json(new ERR('token不为空 ！', 400));
        return;
    }
    if(!par.appSid){
        res.json(new ERR('appSid不为空 ！', 400));
        return;
    }
    AdminToken.checkLogin(par.token,function (err,userInfo) {
        if(err){
            res.json(new ERR(err, 400));
            return;
        }
        var configInfo = {
            uid: userInfo.uid,
            app_sid: par.appSid,
            key: par.key,
            value: par.value,
            comment: par.comment
        };
        if(userInfo.main_userInfo){
            configInfo.uid = userInfo.main_userInfo.uid;
            configInfo.sub_uid = userInfo.uid;
            // return res.json(new ERR("子账号不能设置config",400));
        }else {
            if(par.isSelf){//只有主账号自己能查看
                configInfo.sub_uid = userInfo.uid;
            }
        }
        configDao.setConfig(configInfo, function (err, result) {
            if(err){
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });

    });
});
router.post('/getAppConfig', function(req, res, next) {

    var par = paramAll(req);
    if(!par.appSid){
        res.json(new ERR('缺少appSid ！', 400));
        return;
    }
    configDao.getConfig(par, function (err, result) {
        if(err){
            res.json(new ERR(err, 400));
            return;
        }
        res.json(new PKG(result));
    });

});

//userId
router.post('/getUserConfig', function(req, res, next) {
    var par = paramAll(req);
    // if(!par.appSid){
    //     res.json(new ERR('缺少 appSid ！', 400));
    //     return;
    // }
    AdminToken.checkLogin(par.token,function (err,userInfo) {
        if (err) {
            res.json(new ERR(err, 400));
            return;
        }
        if(userInfo.main_userInfo){
            par.userId = userInfo.main_userInfo.uid;
            par.sub_uid = userInfo.uid;
            par.appSid = userInfo.app_sid;
            par.isSub = 1;
        }else {
            par.userId = userInfo.uid;
        }configDao.getConfig(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });
    });

});

router.post('/getGlobalConfig', function(req, res, next) {
    var par = paramAll(req);
    if(!par.token){
        res.json(new ERR('token不为空', 400));
        return;
    }
    AdminToken.checkAdminLogin(par.token,null,function (err,errCode,adminInfo) {
        if(err){
            res.json(new ERR(err,errCode));
            return;
        }
        configDao.getConfig(par,function (err,result) {
            if(err){
                res.json(new ERR(err,400));
                return;
            }
            res.json(new PKG(result));
        })
    });
});

//获取所有app对应的k-s参数
// router.post('/getAppKS', function(req, res, next) {
//
//     var par = paramAll(req);
//     console.log(par);
//     if(!par.app_sid || !par.sign || !par.t){
//         res.json(new ERR('参数不完整！', 400));
//         return;
//     }
//     configDao.getAppKS(par, function (err, result) {
//         if(err){
//             res.json(new ERR(err, 400));
//             return;
//         }
//         res.json(new PKG(result));
//     });
//
// });

router.post('/updateCValue', function(req, res, next) {
    var par = paramAll(req);
    if(!par.key) return res.json(new ERR('缺少key ！', 400));
    if(!par.value) return res.json(new ERR('缺少value ！', 400));
    if(!par.token) return res.json(new ERR('token不为空 ！', 400));
    AdminToken.checkAdminLogin(par.token, null, function (err, code, adminInfo) {
        if (err) return res.json(new ERR(err, code));
        configDao.updateCValue(par, function (err, result) {
            if(err) return res.json(new ERR(err, 400));
            res.json(new PKG(result));
        })
    });
});


module.exports = router;
